package cn.yaboya.controller;

import cn.yaboya.domain.User;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;

@RestController
public class OrderController {

    @Autowired
    private RestTemplate restTemplate;//用来发请求的  代替以前的工具类


    @GetMapping("/getUserById/{id}")
    @HystrixCommand(fallbackMethod = "fallbackMethod")   //方法熔断
    public User getUserById(@PathVariable Long id){


        //用ribbon调用user服务
        //不用写IP地址  只需要写服务名即可
        //http://user-server/getUserById/{id}?userName=参数&mobiel=参数
        //"http://user-server/getUserById/" + id + "?userName=" + userName +""
        String url = "http://user-server/getUserById/" + id;
        User object = restTemplate.getForObject(url, User.class);
        return object;
    }

    //降级方法 ， 参数和返回值必须和被熔断的方法一致 ，方法名要和  fallbackMethod 的值一致
    public User fallbackMethod(@PathVariable("id")Long id){
        //返回托底数据
        return new User(-1L ,"无此用户","用户服务不可用");
    }


}
